<p>
The wizard functionality is controlled via the wizard form and the controls contained in it. The four action-buttons near the bottom of the wizard form trigger four distinct wizard-actions, as explained in the table #1 bellow. The most important among these actions is the creation of C++ code for ordering generic data and is triggered via the <em>create</em> action-button. The wizard code creation is fairly configurable and is heavily depended on the wizard settings, as explained in the table #2 bellow.
</p>

<h3 style="text-align: center;">Table #1: Wizard action-buttons</h3>

<table cellspacing="0" cellpadding="4" class="definitions"><tbody>

<tr>
<th>Create</th>
<td>This action-button produces simultaneously the C++ code implementation of a <em>strict-weak-ordering</em> functor, a <em>strict-weak-ordering</em> lambda-function and a less-than (&lt;) custom operator. The code creation is based on the contents of the wizard text fields, as well as the state of the other wizard controls. No syntax or logic checking is performed. It is the users responsibility to ensure that the input provided to the wizard is meaningful and syntactically correct.</td>
</tr>

<tr>
<th>Reset</th>
<td>This action-button clears all the text fields of the wizard form and resets the state of its other controls. This action also displays introductory information about the wizard itself.</td>
</tr>

<tr>
<th>Instructions</th>
<td>This action-button displays the wizard instructions which you are currently reading.</td>
</tr>

<tr>
<th>Example</th>
<td>This action-button presents an indicative example, which is intended to be a prompt and expressive way of understanding the wizard usage. (Probably something less boring than these instructions.)</td>
</tr>

</tbody></table>

<h3 style="text-align: center;">Table #2: Wizard settings</h3>

<table cellspacing="0" cellpadding="4" class="definitions"><tbody>

<tr>
<th>Type&nbsp;of&nbsp;ordering</th>
<td>This setting determines whether the resulting code is going to perform <em>ascending</em> or <em>descending</em> ordering. The setting value can be optionally modified via a pair of radio-buttons and is set to <em>ascending</em> by default.</td>
</tr>

<tr>
<th>Functor&nbsp;name</th>
<td>This setting defines the name of the functor structure itself. The setting value should be entered to the corresponding text-field and must be a valid C++ structure name. The functor-name field has a default value, so that you can ignore it in case you are primarily interested in creating a lambda-function or a custom operator.</td>
</tr>

<tr>
<th>Struct&nbsp;or&nbsp;class&nbsp;type</th>
<td>This setting defines the type-name of the functor, lambda and operator parameters. The setting value should be a valid C++ <em>struct</em> or <em>class</em> type and must also represent accurately the type of the objects that the wizard has to order.</td>
</tr>

<tr>
<th>Member&nbsp;variables or&nbsp;methods</th>
<td>This setting defines up to four variable or method names, which should belong to the <em>class</em> or <em>struct</em> objects that we want to order. This is needed because the code produced by this the wizard can order <em>class</em> and <em>struct</em> objects by comparing up to four of their public member variables or methods. The names of these variables and methods should be entered to the corresponding text-field in the order of their significance and are required to model the <a href="http://www.sgi.com/tech/stl/LessThanComparable.html" target="_blank">less-than-comparable</a> concept. (comparable via the <em>operator&lt;</em>) The setting values should also be syntactically correct and logically meaningful, in order in order for the resulting code to became functional and useful. Indicative examples of syntactically valid member variable or method names are: <em>x</em>, <em>top.x</em>, <em>customer().index</em>, <em>size()</em>, <em>first.size()</em>, <em>customer().name()</em>, etc. During the runtime the resulting code will first try to order its <em>struct</em> or <em>class</em> parameters based on the first member variable or method provided by this setting. If this first member proves not helpful enough, the wizard code will proceed using the second and maybe the third or the fourth member as well.
</tr>

<tr>
<th>Const&nbsp;reference</th>
<td>This setting determines whether the parameters of the resulting functor, lambda and operator will be passed by <em>const</em> or <em>non-const</em> reference. The setting value can be optionally modified via a checkbox and is set to <em>const</em> reference by default.</td>
</tr>

</tbody></table>

